﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SegIdenPC.Entidad;
using SegIdenPC.Herramientas;
using log4net;
using GS1.Utilitario;
using System.Drawing.Imaging;
using System.Configuration;
using SegIdenPC.Utilitarios;
using System.Diagnostics;

namespace SegIdenPC.Formularios
{
    public partial class frmAjusteInventario : Form
    {
        #region --- Variables y Propiedades ---
        private static readonly ILog log = LogManager.GetLogger(typeof(frmAjusteInventario));

        private const string TITULO = "Ajuste Inventario";
        private const string FORMATO_TOTAL_ENCONTRADOS = "Total registros: {0}";

        private Tienda tiendaReporte = null;
        private AjusteInventario ajusteInventario = null;
        private ListaLineaAjusteInventario lineaAjusteInventarioItems = null;
        private Inventario inventario = null;
        //private Item item = null;
        private ListaItem listaItem = null;
       // private Item itemBuscar = null;
        private Item itemActual = null;
                

        #endregion
        
        #region --- Constructor ---
        public frmAjusteInventario()
        {
            InitializeComponent();
        }
        #endregion

        #region --- Eventos Formulario ---
        private void frmAjusteInventario_Load(object sender, EventArgs e)
        {
            cargarFormulario();
        }
        private void btnBuscarTiendaO_Click(object sender, EventArgs e)
        {
            elegirTienda();
        }

        private void tbtnSalir_Click_1(object sender, EventArgs e)
        {
            salir();
        }
        private void tbtnVer_Click(object sender, EventArgs e)
        {
            ejecutarReporte();
        }
        private void tbtnGuia_Click(object sender, EventArgs e)
        {
            generarGuia();
        }

        #endregion

        #region --- Metodos Propios ---
        private void cargarFormulario()
        {
            ListaGeneral listaReporte = null;
            try
            {
                Cursor.Current = Cursors.WaitCursor;

                // Instanciando y creando listado de estado
                listaReporte = new ListaGeneral();
                listaReporte.Add(new General { codigo = "0", descripcion = "---Seleccione tipo de ajuste---" });
                listaReporte.Add(new General { codigo = Constantes.AJUSTE_INVENTARIO_SOBRANTES_X_TIENDA, descripcion = Constantes.AJUSTE_DESCRIPCION_INVENTARIO_SOBRANTES_X_TIENDA });
                listaReporte.Add(new General { codigo = Constantes.AJUSTE_INVENTARIO_FALTANTES_X_TIENDA, descripcion = Constantes.AJUSTE_DESCRIPCION_INVENTARIO_FALTANTES_X_TIENDA });
                
                //poblando lista de reportes
                this.cboReportes.DataSource = listaReporte;
                this.cboReportes.ValueMember = Constantes.GENERAL_CODIGO;
                this.cboReportes.DisplayMember = Constantes.GENERAL_DESCRIPCION;
                this.cboReportes.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                log.Error(ex.Message, ex);
                Libreria.MensajeError(ex, TITULO);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }

        private void elegirTienda()
        {
            using (frmMantTienda frmMantTienda = new frmMantTienda())
            {
                frmMantTienda.formularioBusqueda = true;
                if (frmMantTienda.ShowDialog() == DialogResult.Cancel) { return; }

                this.tiendaReporte = frmMantTienda.tiendaActual;
                this.txtTiendaOCodigo.Text = this.tiendaReporte.codigo;
                this.txtTiendaODescripcion.Text = this.tiendaReporte.nombre;
            }
        }

        private void salir()
        {
            this.Close();
        }
        private void ejecutarReporte()
        {
           validarExistenciaInventario();
           try
           {
            if (this.inventario != null)
            {
            switch (this.cboReportes.SelectedValue.ToString())
            {
                case Constantes.AJUSTE_INVENTARIO_SOBRANTES_X_TIENDA:
                    obtieneAjusteInventarioSobrantesTienda();
                    break;
                case Constantes.AJUSTE_INVENTARIO_FALTANTES_X_TIENDA:
                    obtieneAjusteInventarioFaltantesTienda();
                    break;
                default:
                    break;
            }
            
            }

            else
            {
               Libreria.ShowMessageboxExclamacion("El inventario consultado no existe", this.Text);
            }    

           }
            catch (Exception ex)
            {
                Libreria.MensajeError(ex, this.Text);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }

        }
       private void limpiarFormulario()
       {
       this.dgvListado.Rows.Remove(dgvListado.CurrentRow); // OJO !!!
       this.tbtnGuia.Enabled = false;             
       }

        private void validarExistenciaInventario()
        {
            Operacion operacion = null;
            string contenidoXML = string.Empty;

            // Estableciendo operacion a ser enviada al Servicio REST
            operacion = new Operacion();
            operacion.numero = Constantes.OPERACION_OBTENER_INVENTARIO;

           
            operacion.inventario = new Inventario();
            operacion.inventario.tienda = new Tienda();
            operacion.inventario.tienda.codigo = this.txtTiendaOCodigo.Text;
            operacion.inventario.codInventario = this.txtCodigoInventario.Text;


             // Instanciando y ejecutando llamada al ServicioREST
            ConexionREST conexionREST = new ConexionREST();
            contenidoXML = conexionREST.ejecutarOperacion(operacion);

            // Obteniendo Objeto de Error
            OperacionError operacionError = contenidoXML.DeserializarTo<OperacionError>();

            
            // Validar si hay error
            if (operacionError != null)
            {
                Libreria.ShowMessageboxError(operacionError.descripcion);
            }

            // Obteniendo Objeto de Inventario
            this.inventario = contenidoXML.DeserializarTo<Inventario>();

        }

        private void obtieneAjusteInventarioSobrantesTienda()
        {

            Operacion operacion = null;
            string contenidoXML = string.Empty;

            // Estableciendo operacion a ser enviada al Servicio REST
            operacion = new Operacion();
            operacion.numero = Constantes.OPERACION_OBTENER_AJUSTE_INVENTARIO_SOBRANTES_X_TIENDA;

            operacion.inventario = new Inventario();
            operacion.inventario.tienda = new Tienda();
            operacion.inventario.tienda.codigo = this.txtTiendaOCodigo.Text;
            operacion.inventario.codInventario = this.txtCodigoInventario.Text;

            // Instanciando y ejecutando llamada al ServicioREST
            ConexionREST conexionREST = new ConexionREST();
            contenidoXML = conexionREST.ejecutarOperacion(operacion);

            // Obteniendo Objeto de Error
            OperacionError operacionError = contenidoXML.DeserializarTo<OperacionError>();

            // Validar si hay error
            if (operacionError != null)
            {
                Libreria.ShowMessageboxError(operacionError.descripcion);
                return;
            }

            // Obteniendo Objeto de ReporteInventario
            this.ajusteInventario = contenidoXML.DeserializarTo<AjusteInventario>();


            //poblar la grilla
            poblarGrilla();
        }

        private void obtieneAjusteInventarioFaltantesTienda()
        {

            Operacion operacion = null;
            string contenidoXML = string.Empty;

            // Estableciendo operacion a ser enviada al Servicio REST
            operacion = new Operacion();
            operacion.numero = Constantes.OPERACION_OBTENER_AJUSTE_INVENTARIO_FALTANTES_X_TIENDA;

            operacion.inventario = new Inventario();
            operacion.inventario.tienda = new Tienda();
            operacion.inventario.tienda.codigo = this.txtTiendaOCodigo.Text;
            operacion.inventario.codInventario = this.txtCodigoInventario.Text;

            // Instanciando y ejecutando llamada al ServicioREST
            ConexionREST conexionREST = new ConexionREST();
            contenidoXML = conexionREST.ejecutarOperacion(operacion);

            // Obteniendo Objeto de Error
            OperacionError operacionError = contenidoXML.DeserializarTo<OperacionError>();

            // Validar si hay error
            if (operacionError != null)
            {
                Libreria.ShowMessageboxError(operacionError.descripcion);
                return;
            }

            // Obteniendo Objeto de ReporteInventario
            this.ajusteInventario = contenidoXML.DeserializarTo<AjusteInventario>();


            //poblar la grilla
            poblarGrilla();
        }

        private void poblarGrilla()
        {
            ListaLineaAjusteInventario nuevaListaLineaAjusteInventario = new ListaLineaAjusteInventario(); 

            this.dgvListado.AutoGenerateColumns = false;


            if (this.txtCodigoInventario.Text != "")
            {
                foreach (LineaAjusteInventario lineaAjusteInventarioActual in ajusteInventario.listaLineaAjusteInventario.lista)
                {
                    //if (LineaReporteInventarioActual == txtCodigoInventario.Text) /
                    //{
                    nuevaListaLineaAjusteInventario.add(lineaAjusteInventarioActual);
                    //}
                }

                this.dgvListado.DataSource = nuevaListaLineaAjusteInventario == null ?
                                                     new ListPersonalizada<LineaAjusteInventario>() :
                                                     nuevaListaLineaAjusteInventario.lista;


            }
            else
            {
                this.dgvListado.DataSource = ajusteInventario.listaLineaAjusteInventario == null ?
                                                      new ListPersonalizada<LineaAjusteInventario>() :
                                                      ajusteInventario.listaLineaAjusteInventario.lista;


            }


            pintarGrilla(this.dgvListado);
        }



        private void pintarGrilla(DataGridView grilla)
        {
            ListPersonalizada<LineaAjusteInventario> listaLineaAjusteInventario = null;
            listaLineaAjusteInventario = (ListPersonalizada<LineaAjusteInventario>)grilla.DataSource;

            switch (this.cboReportes.SelectedValue.ToString())
            {
                case Constantes.AJUSTE_INVENTARIO_SOBRANTES_X_TIENDA:

                    if (listaLineaAjusteInventario != null)
                    {
                        for (int i = 0; i < listaLineaAjusteInventario.Count; i++)
                        {
                            LineaAjusteInventario lineaAjusteInventario = listaLineaAjusteInventario[i];
                            this.dgvListado.Rows[i].Cells[0].Value = lineaAjusteInventario.producto.codigo;
                            this.dgvListado.Rows[i].Cells[1].Value = lineaAjusteInventario.producto.codProductoProveedor;
                            this.dgvListado.Rows[i].Cells[2].Value = lineaAjusteInventario.producto.descripcion;
                            this.dgvListado.Rows[i].Cells[3].Value = lineaAjusteInventario.cantidadSobrantes;
                        }
                    }
                    break;

                case Constantes.AJUSTE_INVENTARIO_FALTANTES_X_TIENDA:

                    if (listaLineaAjusteInventario != null)
                    {
                        for (int i = 0; i < listaLineaAjusteInventario.Count; i++)
                        {
                            LineaAjusteInventario lineaAjusteInventario = listaLineaAjusteInventario[i];
                            this.dgvListado.Rows[i].Cells[0].Value = lineaAjusteInventario.producto.codigo;
                            this.dgvListado.Rows[i].Cells[1].Value = lineaAjusteInventario.producto.codProductoProveedor;
                            this.dgvListado.Rows[i].Cells[2].Value = lineaAjusteInventario.producto.descripcion;
                            this.dgvListado.Rows[i].Cells[3].Value = lineaAjusteInventario.cantidadFaltantes;
                        }
                    }
                    break;
                default:
                    break;
            }
        }


        private void generarGuia()
        {
         try
           {
            switch (this.cboReportes.SelectedValue.ToString())
            {
            //SOBRANTE: GUIA ENTRADA
            case Constantes.AJUSTE_INVENTARIO_SOBRANTES_X_TIENDA:
            crearGuiaEntrada();
            listarItemsSobrantes();   
                    break;
             //FALTANTE: GUIA SALIDA
            case Constantes.AJUSTE_INVENTARIO_FALTANTES_X_TIENDA:
            crearGuiaSalida();
            listarItemsFaltantes(); // ESTADO T y Tienda =0  
            limpiarFormulario();
                  break;
                default:
                    break;
            }
           }
         catch (Exception ex)
         {
             Libreria.MensajeError(ex, this.Text);
         }
         finally
         {
             Cursor.Current = Cursors.Default;
             Libreria.ShowMessageboxInfo("Se actualizó los item correctamente", TITULO);
             poblarGrilla();
         }
        }
   
        private void crearGuiaEntrada()
        {
            Operacion operacion = null;
            string contenidoXML = string.Empty;

            // Estableciendo operacion a ser enviada al Servicio REST
            operacion = new Operacion();
            operacion.numero = Constantes.OPERACION_REGISTRAR_GUIA;//OPERACION_REGISTRAR_GUIA;

            operacion.guia = new Guia();
            operacion.guia.estado = Constantes.ESTADO_DOCUMENTO_RECEPCIONADO;

            operacion.guia.tiendaDestino = new Tienda();
            operacion.guia.tiendaDestino.codigo = this.txtTiendaOCodigo.Text;

            //operacion.guia.fechaEmision = DateTime.Now.ToString(Constantes.FORMATO_FECHAHORA);

            // Estableciendo transporte
            // operacion.guia.transporte = new Transporte();
            // operacion.guia.transporte.codTransporte = Constantes.VALOR_CERO;

            // Estableciendo tipo de guia
            operacion.guia.tipoGuia = new TipoGuia();
            operacion.guia.tipoGuia.codigo = Constantes.CODIGO_TIPO_GUIA_ELECTRONICA;
            //operacion.guia.tipoGuia.descripcion = Constantes.DESCRIPCION_TIPO_GUIA_ELECTRONICA;

           // operacion.guia.listaLineaGuia = new ListaLineaGuia();
            //operacion.guia.listaLineaGuia.lista = (ListPersonalizada<LineaGuia>)this.dgvListado.DataSource;
            //foreach (LineaAjusteInventario lineaAjusteInventario in (ListPersonalizada<LineaAjusteInventario>)this.dgvListado.DataSource)
            //{
            //    LineaGuia lineaGuia = new LineaGuia();
           // }

            // Instanciando y ejecutando llamada al ServicioREST
            ConexionREST conexionREST = new ConexionREST();
            contenidoXML = conexionREST.ejecutarOperacion(operacion);

            // Obteniendo Objeto de Error
            OperacionError operacionError = contenidoXML.DeserializarTo<OperacionError>();

            // Validar si hay error
            if (operacionError != null)
            {
                Libreria.ShowMessageboxError(operacionError.descripcion);
                return;
            }

            OperacionResultado operacionResultado = contenidoXML.DeserializarTo<OperacionResultado>();

            if ((operacionResultado != null) &&
                (operacionResultado.esOK.Equals(Constantes.SI)))
            {
                Libreria.ShowMessageboxInfo("Registro guardado correctamente", TITULO);
            }
            else
            {
                Libreria.ShowMessageboxError("No se guardo los datos", TITULO);
                return;
            }

        }

        private void listarItemsSobrantes()
        {
            //foreach (DataGridViewRow row in dgvListado.Rows)
            //for (int i = 0; i< dgvListado.Rows.Count; i++)
            {
              Operacion operacion = null;
              string contenidoXML = string.Empty;
 
                // Estableciendo operacion a ser enviada al Servicio REST
               operacion = new Operacion();
               operacion.numero = Constantes.OPERACION_LISTAR_PRODUCTO_ITEMS_SOBRANTES;

               //operacion.item = new Item();
               //operacion.item.producto = new Producto();
               //operacion.item.producto.codigo = Convert.ToString(dgvListado.Rows[i].Cells[0].Value);
               //operacion.item.tienda = new Tienda();
               //operacion.item.tienda.codigo = this.txtTiendaOCodigo.Text;

               operacion.inventario = new Inventario();
               operacion.inventario.tienda = new Tienda();
               operacion.inventario.tienda.codigo = this.txtTiendaOCodigo.Text;
               operacion.inventario.codInventario = this.txtCodigoInventario.Text;

                
                // Instanciando y ejecutando llamada al ServicioREST
                ConexionREST conexionREST = new ConexionREST();
                contenidoXML = conexionREST.ejecutarOperacion(operacion);

                // Obteniendo Objeto de Error
                OperacionError operacionError = contenidoXML.DeserializarTo<OperacionError>();

                // Validar si hay error
                if (operacionError != null)
                {
                 Libreria.ShowMessageboxError(operacionError.descripcion);
                 return;
                }

                // Obteniendo Objeto de ReporteInventario
                //this.listaItem = contenidoXML.DeserializarTo<ListaItem>();
                this.ajusteInventario = contenidoXML.DeserializarTo<AjusteInventario>();

                // Recorrer la listaItem y con la codificación... Consultar Item
                consultarItemSobrantes();
           } 
           
        }

        private void consultarItemSobrantes()
        {
           Operacion operacion = null;
           string contenidoXML = string.Empty;

           foreach (LineaAjusteInventario lineaItems in ajusteInventario.listaLineaAjusteInventario.lista)
           //foreach (Item itemBuscar in this.listaItem.lista)
           {
               if (lineaItems == null) { return; }

               Cursor.Current = Cursors.WaitCursor;
          
                // Estableciendo operacion a ser enviada al Servicio REST
                operacion = new Operacion();
                operacion.numero = Constantes.OPERACION_CONSULTAR_ITEM_INVENTARIO;
                operacion.item = new Item();
                operacion.item = lineaItems.item;
                //operacion.item = itemBuscar;

               // Instanciando y ejecutando llamada al ServicioREST
                ConexionREST conexionREST = new ConexionREST();
                contenidoXML = conexionREST.ejecutarOperacion(operacion);

                // Obteniendo Objeto de Error
                OperacionError operacionError = contenidoXML.DeserializarTo<OperacionError>();

                // Validar si hay error
                if (operacionError != null)
                {
                    Libreria.ShowMessageboxError(operacionError.descripcion);
                    return;
                }

                // Obtenido el Objeto Item
                this.itemActual = contenidoXML.DeserializarTo<Item>();

                if (itemActual != null)
                {
                    actualizarTiendaSobrantes();
                }            
           }
        }

        private void actualizarTiendaSobrantes()
        {
            Operacion operacion = null;
            string contenidoXML = string.Empty;


            // Estableciendo operacion a ser enviada al Servicio REST
            operacion = new Operacion();
            //Se registra el cambio en el item

            operacion.numero = Constantes.OPERACION_MODIFICAR_ITEM;
            operacion.item = this.itemActual;
            operacion.item.tienda = new Tienda();
            operacion.item.tienda.codigo = this.txtTiendaOCodigo.Text;

            // Instanciando y ejecutando llamada al ServicioREST
            ConexionREST conexionREST = new ConexionREST();
            contenidoXML = conexionREST.ejecutarOperacion(operacion);

            // Obteniendo Objeto de Error
            OperacionError operacionError = contenidoXML.DeserializarTo<OperacionError>();

            // Validar si hay error
            if (operacionError != null)
            {
                Libreria.ShowMessageboxError(operacionError.descripcion);
                return;
            }

            OperacionResultado operacionResultado = contenidoXML.DeserializarTo<OperacionResultado>();

            if ((operacionResultado != null) &&
                (operacionResultado.esOK.Equals(Constantes.SI)))
            {
                
            }
            else
            {
                return;
            }      
        }
 
        private void crearGuiaSalida()
        {
            Operacion operacion = null;
            string contenidoXML = string.Empty;

             // Estableciendo operacion a ser enviada al Servicio REST
            operacion = new Operacion();
            operacion.numero = Constantes.OPERACION_REGISTRAR_GUIA_DOCUMENTO;//OPERACION_REGISTRAR_GUIA;

            operacion.guia = new Guia();
            operacion.guia.estado = Constantes.ESTADO_DOCUMENTO_RECEPCIONADO;

            operacion.guia.tiendaOrigen = new Tienda();
            operacion.guia.tiendaOrigen.codigo = this.txtTiendaOCodigo.Text; // Tienda "4" - ESTADO EN TRÁNSITO.

            operacion.guia.tipoGuia = new TipoGuia();
            operacion.guia.tipoGuia.codigo = Constantes.CODIGO_TIPO_GUIA_ELECTRONICA;

            operacion.guia.listaLineaGuia = new ListaLineaGuia();
            //operacion.guia.listaLineaGuia.lista = (ListPersonalizada<LineaGuia>)this.dgvListado.DataSource;
            foreach (LineaAjusteInventario lineaAjusteInventario in (ListPersonalizada<LineaAjusteInventario>)this.dgvListado.DataSource)
            {              
                LineaGuia lineaGuia = new LineaGuia();      
            }

            // Instanciando y ejecutando llamada al ServicioREST
            ConexionREST conexionREST = new ConexionREST();
            contenidoXML = conexionREST.ejecutarOperacion(operacion);

            // Obteniendo Objeto de Error
            OperacionError operacionError = contenidoXML.DeserializarTo<OperacionError>();

            // Validar si hay error
            if (operacionError != null)
            {
                Libreria.ShowMessageboxError(operacionError.descripcion);
                return;
            }

            OperacionResultado operacionResultado = contenidoXML.DeserializarTo<OperacionResultado>();

            if ((operacionResultado != null) &&
                (operacionResultado.esOK.Equals(Constantes.SI)))
            {
                Libreria.ShowMessageboxInfo("Registro guardado correctamente", TITULO);
            }
            else
            {
                Libreria.ShowMessageboxError("No se guardo los datos", TITULO);
                return;
            }

        }

        private void listarItemsFaltantes()
        {
                Operacion operacion = null;
                string contenidoXML = string.Empty;

                // Estableciendo operacion a ser enviada al Servicio REST
                operacion = new Operacion();
                operacion.numero = Constantes.OPERACION_LISTAR_PRODUCTO_ITEMS_FALTANTES;

                operacion.inventario = new Inventario();
                operacion.inventario.tienda = new Tienda();
                operacion.inventario.tienda.codigo = this.txtTiendaOCodigo.Text;
                operacion.inventario.codInventario = this.txtCodigoInventario.Text;;

                // Instanciando y ejecutando llamada al ServicioREST
                ConexionREST conexionREST = new ConexionREST();
                contenidoXML = conexionREST.ejecutarOperacion(operacion);

                // Obteniendo Objeto de Error
                OperacionError operacionError = contenidoXML.DeserializarTo<OperacionError>();

                // Validar si hay error
                if (operacionError != null)
                {
                    Libreria.ShowMessageboxError(operacionError.descripcion);
                    return;
                }

                // Obteniendo Objeto de ReporteInventario
                //this.ajusteInventario = contenidoXML.DeserializarTo<AjusteInventario>();
                this.ajusteInventario = contenidoXML.DeserializarTo<AjusteInventario>();
                
                //Recorrer lista
                consultarItemFaltantes();
            }

        private void consultarItemFaltantes()
        {
             
            Operacion operacion = null;
            string contenidoXML = string.Empty;
      
            foreach (LineaAjusteInventario lineaItems in ajusteInventario.listaLineaAjusteInventario.lista)

            //foreach (Item itemBuscar in this.listaLineaItems.lista)
            {
                if (lineaItems == null) { return; }

                Cursor.Current = Cursors.WaitCursor;

                // Estableciendo operacion a ser enviada al Servicio REST
                operacion = new Operacion();
                operacion.numero = Constantes.OPERACION_CONSULTAR_ITEM_INVENTARIO;
                operacion.item = new Item();
                operacion.item = lineaItems.item;

                // Instanciando y ejecutando llamada al ServicioREST
                ConexionREST conexionREST = new ConexionREST();
                contenidoXML = conexionREST.ejecutarOperacion(operacion);

                // Obteniendo Objeto de Error
                OperacionError operacionError = contenidoXML.DeserializarTo<OperacionError>();

                // Validar si hay error
                if (operacionError != null)
                {
                    Libreria.ShowMessageboxError(operacionError.descripcion);
                    return;
                }

                // Obtenido el Objeto Item
                this.itemActual = contenidoXML.DeserializarTo<Item>();

                if (itemActual != null)
                {
                    actualizarTiendaFaltantes();
                }
            }
        }


        private void actualizarTiendaFaltantes()
        {
            Operacion operacion = null;
            string contenidoXML = string.Empty;


            // Estableciendo operacion a ser enviada al Servicio REST
            operacion = new Operacion();
            //Se registra el cambio en el item

            operacion.numero = Constantes.OPERACION_MODIFICAR_ITEM;
            operacion.item = this.itemActual;
            operacion.item.estado = Constantes.ESTADO_ITEM_DE_TRANSITO;

            /*if ((this.itemActual.estado.cont.listaLineaInventario == null) || (this.listaLineaInventario.lista.Count == 0))
            {
                Util.CampoNecesario(this.lvwListado, "Debe ingresar por lo menos un item", this.Text);
                return true;
            }
            */

           // operacion.item.tienda = new Tienda();
           // operacion.item.tienda.codigo = "4";
            
                       
            // Instanciando y ejecutando llamada al ServicioREST
            ConexionREST conexionREST = new ConexionREST();
            contenidoXML = conexionREST.ejecutarOperacion(operacion);

            // Obteniendo Objeto de Error
            OperacionError operacionError = contenidoXML.DeserializarTo<OperacionError>();

            // Validar si hay error
            if (operacionError != null)
            {
                Libreria.ShowMessageboxError(operacionError.descripcion);
                return;
            }

            OperacionResultado operacionResultado = contenidoXML.DeserializarTo<OperacionResultado>();

            if ((operacionResultado != null) &&
                (operacionResultado.esOK.Equals(Constantes.SI)))
            {
             }
            else
            {
                return;
            }
        }
        #endregion

        private void cboReportes_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }
}
